package cn.edu.hqu.cst.android.cxy.test3;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.app.Dialog;
import android.app.ProgressDialog;
import android.icu.text.RelativeDateTimeFormatter;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.view.View;
import android.widget.Button;

public class Process extends AppCompatActivity {
    // 该程序模拟填充长度为 100 的数组
    int[] data = new int[102];
    private int hasData = 0;
    // 定义进度对话框的标识
    final int PROGRESS_DIALOG = 0x112;
    // 记录进度对话框的完成百分比
    int progressStatus = 0;
    private ProgressDialog pd;
    int process = 0;
    Handler handler = new Handler(Looper.myLooper()) {
        @Override
        public void handleMessage(@NonNull Message msg) {
            super.handleMessage(msg);
            if(msg.what == 1){
                int a = (int)(msg.obj);
                pd.setProgress(a);
            }
        }
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_process);
        Button btn = findViewById(R.id.button1);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                CreateDialog();
                onPrepareDialog();
            }
        });
    }
    public void CreateDialog(){
        // 创建进度对话框
        pd = new ProgressDialog(Process.this);
        pd.setMax(100);
        // 设置对话框的标题
        pd.setTitle("任务完成百分比");
        // 设置对话框 显示的内容
        pd.setMessage("耗时任务的完成百分比");
        // 设置对话框不能用“取消”按钮关闭
        pd.setCancelable(false);
        // 设置对话框的进度条风格
        pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        // 设置对话框的进度条是否显示进度
        pd.setIndeterminate(false);
        //展示进度条
        pd.show();
    }
    public  void  onPrepareDialog(){
        pd.setProgress(0);
        hasData = 0;
        progressStatus = 0;
        new Thread(){
            public void run() {
                while (progressStatus < 100) {
                    // 获取耗时操作的完成百分比
                    progressStatus = doWork();
                    Message message = new Message();
                    message.what = 1;
                    message.obj = progressStatus;
                    handler.sendMessage(message);
                }
                // 关闭对话框
                pd.dismiss();
            }
        }.start();
    }
    // 模拟一个耗时的操作。
    public int doWork() {
        // 为数组元素赋值
        data[hasData++] = (int) (Math.random() * 100);
        try {
            Thread.sleep(100);
        }
        catch (InterruptedException e) {
            e.printStackTrace();
        }
        return hasData;
    }
}